#include <bits/stdc++.h>
using namespace std;

class Solution
{
  public:
    // 找出字符串数组中的最长公共前缀
    string longestCommonPrefix(vector<string> &strs)
    {
        // 如果字符串数组为空, 返回空字符串
        if (strs.empty())
        {
            return "";
        }
        int l1 = strs[0].length();
        int l2 = strs.size();
        // 遍历第一个字符串的每个字符
        for (size_t i = 0; i < l1; ++i)
        {
            char flag = strs[0][i];
            // 与数组中其他字符串的对应字符进行比较
            for (int j = 1; j < l2; ++j)
            {
                // 如果当前索引超出其他字符串长度或字符不匹配, 返回当前公共前缀
                if (i == strs[j].length() || flag != strs[j][i])
                {
                    return strs[0].substr(0, i);
                }
            }
        }
        // 如果所有字符都匹配, 返回第一个字符串
        return strs[0];
    }
};

int main()
{
    Solution s;
    vector<string> s1 = {{"abca"}, {"abc"}, {"abca"}, {"abc"}, {"abcc"}};
    cout << s.longestCommonPrefix(s1) << endl;
    return 0;
}